from typing import List
import json

class Solution:
    """
    题目理解1：
    一字节码：第一字节<128；
    二字节码：192<=第一字节<224；
    三字节码：224<=第一字节<240；
    四字节码：248>第一字节>=240；
    其他大小的第一字节非法；大于二字节的码，后边的字节都大于等于128小于192

    题目理解2：
    主要问题是判断什么样的数字符合如下规则: 0xxxxxxx 110xxxxx 1110xxxx 11110xxx
    其实就是二进制下， 对0b10000000与运算，得0代表符合0xxxxxxx 对0b11100000与运算，
    得0b11000000代表符合110xxxxx 对0b11110000与运算，的0b11100000代表符合1110xxxx 对0b11111000与运算，
    得0b11110000代表符合11110xxx
    而上面的判断结果正好跟对应的字节长度相关。满足第一条后面就有0个字节，
    第二条就是1个字节...,所以我们可以把这个关系放在一个二维数组里 遍历这个规则数组，
    规则数组下标所对应的就是后面跟着的字节数。而后面跟着的字节判断规则如下: 0xxxxxxx，
    即对0b11000000与运算，得0b10000000代表符合0xxxxxxx
    """
    # 方法一：遍历 + 位运算
    def validUtf8(self, data: List[int]) -> bool:
        MASK1, MASK2 = 1 << 7, (1 << 7) | (1 << 6)

        def getBytes(num: int) -> int:
            if (num & MASK1) == 0:
                return 1
            n, mask = 0, MASK1
            while num & mask:
                n += 1
                if n > 4:
                    return -1
                mask >>= 1
            return n if n >= 2 else -1

        index, m = 0, len(data)
        while index < m:
            n = getBytes(data[index])
            if n < 0 or index + n > m or any((ch & MASK2) != MASK1 for ch in data[index + 1: index + n]):
                return False
            index += n
        return True


def main():
    import sys
    import io
    def readlines():
        for line in io.TextIOWrapper(sys.stdin.buffer, encoding='utf-8'):
            yield line.strip('\n')

    lines = readlines()
    while True:
        try:
            line = next(lines)
            data = json.loads(line)

            ret = Solution().validUtf8(data)

            # out = (ret,)
            out = (ret)
            print(type(out))
            print(out)
        except StopIteration:
            break

if __name__ == '__main__':
    main()